package com.jf.mall.dao;

import com.jf.mall.domain.Furniture;

import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA
 * Description:
 * User:22954
 * Date:2024-09-26
 * Time:13:29
 */
public interface FurnitureDAO {
    /**
     * 从数据库查询家具信息
     * @return List<Furniture> 如果家具数据为空,返回null
     */
    public List<Furniture> queryFurniture();

    /**
     * 从数据库查询家具信息
     * @param id 查询家具的id
     * @return Furniture对象, 若数据不存在,返回null
     */
    public Furniture queryFurnitureById(int id);

    /**
     * 向数据库添加家具信息
     * @param furniture 家具
     * @return 成功返回受影响行数
     */
    public int addFurniture(Furniture furniture);

    /**
     * 向数据库删除家具信息
     * @param id 家具id
     * @return 成功返回影响行数(删除为1, 不存在为0)
     */
    public int deleteFurnitureById(int id);

    /**
     * 向数据库修改家具信息
     * @param furniture Furniture对象
     * @return 返回受影响行数 (修改成功返回1, 无影响/失败返回0)
     */
    public int updateFurniture(Furniture furniture);

    /**
     * 从数据库查询家具数据量
     * @return 总家具数据量
     */
    public int getFurnitureCount();

    /**
     * 向数据库查询家具信息
     * @param start 查询起始下标
     * @param size 查询数据量大小
     * @return List<Furniture> 如果家具数据为空,返回null
     */
    public List<Furniture> queryFurnitureByLimit(int start, int size);

    /**
     * 根据家具名,从数据库模糊检索家具数据量
     * @param name 家具名
     * @return 模糊查询的家具数据量
     */
    public int getFurnitureCountByName(String name);

    /**
     * 根据家具名,向数据库模糊查询家具信息
     * @param start 查询起始下标
     * @param size 查询数据大小
     * @param name 家具名
     * @return List<Furniture> 如果家具数据为空,返回null
     */
    public List<Furniture> queryFurnitureByLimitAndName(int start, int size, String name);

    /**
     * 根据id,向数据库查询家具信息,并用id关联
     * @param ids 查询的ids整型数组
     * @return Map<ids, Furniture>  如果家具数据为空,返回null
     */
    public Map<Integer, Furniture> queryFurnitureMapByIds(Integer[] ids);
}
